package com.apestech.framework.metadata;

import com.apestech.framework.db.SqlResultSet;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.RowIdLifetime;
import java.sql.SQLException;

/**
 * 数据库相关媒体信息合集
 * @author hupo
 *
 */
public class DbMetaData implements DatabaseMetaData {
	
	private final DatabaseMetaData dbmd;
	private String catalog="";
	private String schema="";
	
	public DbMetaData(DatabaseMetaData dbmd) throws SQLException{
		this.dbmd=dbmd;
	}
	
	public DbMetaData(DatabaseMetaData dbmd, String catalog, String schema) throws SQLException{
		this.dbmd=dbmd;
		this.catalog=catalog;
		this.schema=schema;
	}

	public boolean tableExists(String tableName) throws SQLException {
		SqlResultSet rs=new SqlResultSet(this.dbmd.getTables(getCatalog(), "%", tableName, null));
		boolean result=false;
		if(rs.next()){
			result=true;
		}
		rs.close();
		return result;
	}

	public boolean functionExists(String id) throws SQLException {
		ResultSet rs=this.dbmd.getFunctions(getCatalog(), "%", id);
		boolean result=false;
		if(rs.next()){
			result=true;
		}
		rs.close();
		return result;
	}

	public boolean procedureExists(String id) throws SQLException {
		ResultSet rs=this.dbmd.getProcedures(getCatalog(), "%", id);
		boolean result=false;
		if(rs.next()){
			result=true;
		}
		rs.close();
		return result;
	}

	/**
	 * 表所在的类别名称;""表示获取没有类别的列,null表示获取所有类别的列。
	 * @return
	 */
	public String getCatalog(){
		if(!"".equals(this.catalog)){
			return this.catalog;
		} else {
			return null;
		}
	}
	
	/**
	 * 表所在的模式名称(oracle中对应于Tablespace);""表示获取没有模式的列,null标识获取所有模式的列; 可包含单字符通配符("_"),或多字符通配符("%"); 
	 * @return
	 */
	public String getSchema(){
		if(!"".equals(this.schema)){
			return this.schema;
		} else {
			return "%";
		}
	}
		
	/*原生方法*/
	public boolean isWrapperFor(Class<?> arg0) throws SQLException {
		return this.dbmd.isWrapperFor(arg0);
	}

	public <T> T unwrap(Class<T> arg0) throws SQLException {
		return this.dbmd.unwrap(arg0);
	}

	public boolean allProceduresAreCallable() throws SQLException {
		return this.dbmd.allProceduresAreCallable();
	}

	public boolean allTablesAreSelectable() throws SQLException {
		return this.dbmd.allTablesAreSelectable();
	}

	public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
		return this.dbmd.autoCommitFailureClosesAllResultSets();
	}

	public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
		return this.dbmd.dataDefinitionCausesTransactionCommit();
	}

	public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
		return this.dbmd.dataDefinitionIgnoredInTransactions();
	}

	public boolean deletesAreDetected(int arg0) throws SQLException {
		return this.dbmd.deletesAreDetected(arg0);
	}

	public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
		return this.dbmd.doesMaxRowSizeIncludeBlobs();
	}

	public boolean generatedKeyAlwaysReturned() throws SQLException {
		return this.dbmd.generatedKeyAlwaysReturned();
	}

	public ResultSet getAttributes(String arg0, String arg1, String arg2,
			String arg3) throws SQLException {
		return this.dbmd.getAttributes(arg0, arg1, arg2, arg3);
	}

	public ResultSet getBestRowIdentifier(String arg0, String arg1,
			String arg2, int arg3, boolean arg4) throws SQLException {
		return this.dbmd.getBestRowIdentifier(arg0, arg1, arg2, arg3, arg4);
	}

	public String getCatalogSeparator() throws SQLException {
		return this.dbmd.getCatalogSeparator();
	}

	public String getCatalogTerm() throws SQLException {
		return this.dbmd.getCatalogTerm();
	}

	public ResultSet getCatalogs() throws SQLException {
		return this.dbmd.getCatalogs();
	}

	public ResultSet getClientInfoProperties() throws SQLException {
		return this.dbmd.getClientInfoProperties();
	}

	public ResultSet getColumnPrivileges(String arg0, String arg1, String arg2,
			String arg3) throws SQLException {
		return this.dbmd.getColumnPrivileges(arg0, arg1, arg2, arg3);
	}

	public ResultSet getColumns(String arg0, String arg1, String arg2,
			String arg3) throws SQLException {
		return this.dbmd.getColumns(arg0, arg1, arg2, arg3);
	}

	public Connection getConnection() throws SQLException {
		return this.dbmd.getConnection();
	}

	public ResultSet getCrossReference(String arg0, String arg1, String arg2,
			String arg3, String arg4, String arg5) throws SQLException {
		return this.dbmd.getCrossReference(arg0, arg1, arg2, arg3, arg4, arg5);
	}

	public int getDatabaseMajorVersion() throws SQLException {
		return this.dbmd.getDatabaseMajorVersion();
	}

	public int getDatabaseMinorVersion() throws SQLException {
		return this.dbmd.getDatabaseMinorVersion();
	}

	public String getDatabaseProductName() throws SQLException {
		return this.dbmd.getDatabaseProductName();
	}

	public String getDatabaseProductVersion() throws SQLException {
		return this.dbmd.getDatabaseProductVersion();
	}

	public int getDefaultTransactionIsolation() throws SQLException {
		return this.dbmd.getDefaultTransactionIsolation();
	}

	public int getDriverMajorVersion() {
		return this.dbmd.getDriverMajorVersion();
	}

	public int getDriverMinorVersion() {
		return this.dbmd.getDriverMinorVersion();
	}

	public String getDriverName() throws SQLException {
		return this.dbmd.getDriverName();
	}

	public String getDriverVersion() throws SQLException {
		return this.dbmd.getDriverVersion();
	}

	public ResultSet getExportedKeys(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getExportedKeys(arg0, arg1, arg2);
	}

	public String getExtraNameCharacters() throws SQLException {
		return this.dbmd.getExtraNameCharacters();
	}

	public ResultSet getFunctionColumns(String arg0, String arg1, String arg2,
			String arg3) throws SQLException {
		return this.dbmd.getFunctionColumns(arg0, arg1, arg2, arg3);
	}

	public ResultSet getFunctions(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getFunctions(arg0, arg1, arg2);
	}

	public String getIdentifierQuoteString() throws SQLException {
		return this.dbmd.getIdentifierQuoteString();
	}

	public ResultSet getImportedKeys(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getImportedKeys(arg0, arg1, arg2);
	}

	public ResultSet getIndexInfo(String arg0, String arg1, String arg2,
			boolean arg3, boolean arg4) throws SQLException {
		return this.dbmd.getIndexInfo(arg0, arg1, arg2, arg3, arg4);
	}

	public int getJDBCMajorVersion() throws SQLException {
		return this.dbmd.getJDBCMajorVersion();
	}

	public int getJDBCMinorVersion() throws SQLException {
		return this.dbmd.getJDBCMinorVersion();
	}

	public int getMaxBinaryLiteralLength() throws SQLException {
		return this.dbmd.getMaxBinaryLiteralLength();
	}

	public int getMaxCatalogNameLength() throws SQLException {
		return this.dbmd.getMaxCatalogNameLength();
	}

	public int getMaxCharLiteralLength() throws SQLException {
		return this.dbmd.getMaxCharLiteralLength();
	}

	public int getMaxColumnNameLength() throws SQLException {
		return this.dbmd.getMaxColumnNameLength();
	}

	public int getMaxColumnsInGroupBy() throws SQLException {
		return this.dbmd.getMaxColumnsInGroupBy();
	}

	public int getMaxColumnsInIndex() throws SQLException {
		return this.dbmd.getMaxColumnsInIndex();
	}

	public int getMaxColumnsInOrderBy() throws SQLException {
		return this.dbmd.getMaxColumnsInOrderBy();
	}

	public int getMaxColumnsInSelect() throws SQLException {
		return this.dbmd.getMaxColumnsInSelect();
	}

	public int getMaxColumnsInTable() throws SQLException {
		return this.dbmd.getMaxColumnsInTable();
	}

	public int getMaxConnections() throws SQLException {
		return this.dbmd.getMaxConnections();
	}

	public int getMaxCursorNameLength() throws SQLException {
		return this.dbmd.getMaxCursorNameLength();
	}

	public int getMaxIndexLength() throws SQLException {
		return this.dbmd.getMaxIndexLength();
	}

	public int getMaxProcedureNameLength() throws SQLException {
		return this.dbmd.getMaxProcedureNameLength();
	}

	public int getMaxRowSize() throws SQLException {
		return this.dbmd.getMaxRowSize();
	}

	public int getMaxSchemaNameLength() throws SQLException {
		return this.dbmd.getMaxSchemaNameLength();
	}

	public int getMaxStatementLength() throws SQLException {
		return this.dbmd.getMaxStatementLength();
	}

	public int getMaxStatements() throws SQLException {
		return this.dbmd.getMaxStatements();
	}

	public int getMaxTableNameLength() throws SQLException {
		return this.dbmd.getMaxTableNameLength();
	}

	public int getMaxTablesInSelect() throws SQLException {
		return this.dbmd.getMaxTablesInSelect();
	}

	public int getMaxUserNameLength() throws SQLException {
		return this.dbmd.getMaxUserNameLength();
	}

	public String getNumericFunctions() throws SQLException {
		return this.dbmd.getNumericFunctions();
	}

	public ResultSet getPrimaryKeys(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getPrimaryKeys(arg0, arg1, arg2);
	}

	public ResultSet getProcedureColumns(String arg0, String arg1, String arg2,
			String arg3) throws SQLException {
		return this.dbmd.getProcedureColumns(arg0, arg1, arg2, arg3);
	}

	public String getProcedureTerm() throws SQLException {
		return this.dbmd.getProcedureTerm();
	}

	public ResultSet getProcedures(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getProcedures(arg0, arg1, arg2);
	}

	public ResultSet getPseudoColumns(String arg0, String arg1, String arg2,
			String arg3) throws SQLException {
		return this.dbmd.getPseudoColumns(arg0, arg1, arg2, arg3);
	}

	public int getResultSetHoldability() throws SQLException {
		return this.dbmd.getResultSetHoldability();
	}

	public RowIdLifetime getRowIdLifetime() throws SQLException {
		return this.dbmd.getRowIdLifetime();
	}

	public String getSQLKeywords() throws SQLException {
		return this.dbmd.getSQLKeywords();
	}

	public int getSQLStateType() throws SQLException {
		return this.dbmd.getSQLStateType();
	}

	public String getSchemaTerm() throws SQLException {
		return this.dbmd.getSchemaTerm();
	}

	public ResultSet getSchemas() throws SQLException {
		return this.dbmd.getSchemas();
	}

	public ResultSet getSchemas(String arg0, String arg1) throws SQLException {
		return this.dbmd.getSchemas(arg0, arg1);
	}

	public String getSearchStringEscape() throws SQLException {
		return this.dbmd.getSearchStringEscape();
	}

	public String getStringFunctions() throws SQLException {
		return this.dbmd.getStringFunctions();
	}

	public ResultSet getSuperTables(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getSuperTables(arg0, arg1, arg2);
	}

	public ResultSet getSuperTypes(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getSuperTypes(arg0, arg1, arg2);
	}

	public String getSystemFunctions() throws SQLException {
		return this.dbmd.getSystemFunctions();
	}

	public ResultSet getTablePrivileges(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getTablePrivileges(arg0, arg1, arg2);
	}

	public ResultSet getTableTypes() throws SQLException {
		return this.dbmd.getTableTypes();
	}

	public ResultSet getTables(String arg0, String arg1, String arg2,
			String[] arg3) throws SQLException {
		return this.dbmd.getTables(arg0, arg1, arg2, arg3);
	}

	public String getTimeDateFunctions() throws SQLException {
		return this.dbmd.getTimeDateFunctions();
	}

	public ResultSet getTypeInfo() throws SQLException {
		return this.dbmd.getTypeInfo();
	}

	public ResultSet getUDTs(String arg0, String arg1, String arg2, int[] arg3)
			throws SQLException {
		return this.dbmd.getUDTs(arg0, arg1, arg2, arg3);
	}

	public String getURL() throws SQLException {
		return this.dbmd.getURL();
	}

	public String getUserName() throws SQLException {
		return this.dbmd.getUserName();
	}

	public ResultSet getVersionColumns(String arg0, String arg1, String arg2)
			throws SQLException {
		return this.dbmd.getVersionColumns(arg0, arg1, arg2);
	}

	public boolean insertsAreDetected(int arg0) throws SQLException {
		return this.dbmd.insertsAreDetected(arg0);
	}

	public boolean isCatalogAtStart() throws SQLException {
		return this.dbmd.isCatalogAtStart();
	}

	public boolean isReadOnly() throws SQLException {
		return this.dbmd.isReadOnly();
	}

	public boolean locatorsUpdateCopy() throws SQLException {
		return this.dbmd.locatorsUpdateCopy();
	}

	public boolean nullPlusNonNullIsNull() throws SQLException {
		return this.dbmd.nullPlusNonNullIsNull();
	}

	public boolean nullsAreSortedAtEnd() throws SQLException {
		return this.dbmd.nullsAreSortedAtEnd();
	}

	public boolean nullsAreSortedAtStart() throws SQLException {
		return this.dbmd.nullsAreSortedAtStart();
	}

	public boolean nullsAreSortedHigh() throws SQLException {
		return this.dbmd.nullsAreSortedHigh();
	}

	public boolean nullsAreSortedLow() throws SQLException {
		return this.dbmd.nullsAreSortedLow();
	}

	public boolean othersDeletesAreVisible(int arg0) throws SQLException {
		return this.dbmd.othersDeletesAreVisible(arg0);
	}

	public boolean othersInsertsAreVisible(int arg0) throws SQLException {
		return this.dbmd.othersInsertsAreVisible(arg0);
	}

	public boolean othersUpdatesAreVisible(int arg0) throws SQLException {
		return this.dbmd.othersUpdatesAreVisible(arg0);
	}

	public boolean ownDeletesAreVisible(int arg0) throws SQLException {
		return this.dbmd.ownDeletesAreVisible(arg0);
	}

	public boolean ownInsertsAreVisible(int arg0) throws SQLException {
		return this.dbmd.ownInsertsAreVisible(arg0);
	}

	public boolean ownUpdatesAreVisible(int arg0) throws SQLException {
		return this.dbmd.ownUpdatesAreVisible(arg0);
	}

	public boolean storesLowerCaseIdentifiers() throws SQLException {
		return this.dbmd.storesLowerCaseIdentifiers();
	}

	public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
		return this.dbmd.storesLowerCaseQuotedIdentifiers();
	}

	public boolean storesMixedCaseIdentifiers() throws SQLException {
		return this.dbmd.storesMixedCaseIdentifiers();
	}

	public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
		return this.dbmd.storesMixedCaseQuotedIdentifiers();
	}

	public boolean storesUpperCaseIdentifiers() throws SQLException {
		return this.dbmd.storesUpperCaseIdentifiers();
	}

	public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
		return this.dbmd.storesUpperCaseQuotedIdentifiers();
	}

	public boolean supportsANSI92EntryLevelSQL() throws SQLException {
		return this.dbmd.supportsANSI92EntryLevelSQL();
	}

	public boolean supportsANSI92FullSQL() throws SQLException {
		return this.dbmd.supportsANSI92FullSQL();
	}

	public boolean supportsANSI92IntermediateSQL() throws SQLException {
		return this.dbmd.supportsANSI92IntermediateSQL();
	}

	public boolean supportsAlterTableWithAddColumn() throws SQLException {
		return this.dbmd.supportsAlterTableWithAddColumn();
	}

	public boolean supportsAlterTableWithDropColumn() throws SQLException {
		return this.dbmd.supportsAlterTableWithDropColumn();
	}

	public boolean supportsBatchUpdates() throws SQLException {
		return this.dbmd.supportsBatchUpdates();
	}

	public boolean supportsCatalogsInDataManipulation() throws SQLException {
		return this.dbmd.supportsCatalogsInDataManipulation();
	}

	public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
		return this.dbmd.supportsCatalogsInIndexDefinitions();
	}

	public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
		return this.dbmd.supportsCatalogsInPrivilegeDefinitions();
	}

	public boolean supportsCatalogsInProcedureCalls() throws SQLException {
		return this.dbmd.supportsCatalogsInProcedureCalls();
	}

	public boolean supportsCatalogsInTableDefinitions() throws SQLException {
		return this.dbmd.supportsCatalogsInTableDefinitions();
	}

	public boolean supportsColumnAliasing() throws SQLException {
		return this.dbmd.supportsColumnAliasing();
	}

	public boolean supportsConvert() throws SQLException {
		return this.dbmd.supportsConvert();
	}

	public boolean supportsConvert(int arg0, int arg1) throws SQLException {
		return this.dbmd.supportsConvert(arg0, arg1);
	}

	public boolean supportsCoreSQLGrammar() throws SQLException {
		return this.dbmd.supportsCoreSQLGrammar();
	}

	public boolean supportsCorrelatedSubqueries() throws SQLException {
		return this.dbmd.supportsCorrelatedSubqueries();
	}

	public boolean supportsDataDefinitionAndDataManipulationTransactions()
			throws SQLException {
		return this.dbmd.supportsDataDefinitionAndDataManipulationTransactions();
	}

	public boolean supportsDataManipulationTransactionsOnly()
			throws SQLException {
		return this.dbmd.supportsDataManipulationTransactionsOnly();
	}

	public boolean supportsDifferentTableCorrelationNames() throws SQLException {
		return this.dbmd.supportsDifferentTableCorrelationNames();
	}

	public boolean supportsExpressionsInOrderBy() throws SQLException {
		return this.dbmd.supportsExpressionsInOrderBy();
	}

	public boolean supportsExtendedSQLGrammar() throws SQLException {
		return this.dbmd.supportsExtendedSQLGrammar();
	}

	public boolean supportsFullOuterJoins() throws SQLException {
		return this.dbmd.supportsFullOuterJoins();
	}

	public boolean supportsGetGeneratedKeys() throws SQLException {
		return this.dbmd.supportsGetGeneratedKeys();
	}

	public boolean supportsGroupBy() throws SQLException {
		return this.dbmd.supportsGroupBy();
	}

	public boolean supportsGroupByBeyondSelect() throws SQLException {
		return this.dbmd.supportsGroupByBeyondSelect();
	}

	public boolean supportsGroupByUnrelated() throws SQLException {
		return this.dbmd.supportsGroupByUnrelated();
	}

	public boolean supportsIntegrityEnhancementFacility() throws SQLException {
		return this.dbmd.supportsIntegrityEnhancementFacility();
	}

	public boolean supportsLikeEscapeClause() throws SQLException {
		return this.dbmd.supportsLikeEscapeClause();
	}

	public boolean supportsLimitedOuterJoins() throws SQLException {
		return this.dbmd.supportsLimitedOuterJoins();
	}

	public boolean supportsMinimumSQLGrammar() throws SQLException {
		return this.dbmd.supportsMinimumSQLGrammar();
	}

	public boolean supportsMixedCaseIdentifiers() throws SQLException {
		return this.dbmd.supportsMixedCaseIdentifiers();
	}

	public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
		return this.dbmd.supportsMixedCaseQuotedIdentifiers();
	}

	public boolean supportsMultipleOpenResults() throws SQLException {
		return this.dbmd.supportsMultipleOpenResults();
	}

	public boolean supportsMultipleResultSets() throws SQLException {
		return this.dbmd.supportsMultipleResultSets();
	}

	public boolean supportsMultipleTransactions() throws SQLException {
		return this.dbmd.supportsMultipleTransactions();
	}

	public boolean supportsNamedParameters() throws SQLException {
		return this.dbmd.supportsNamedParameters();
	}

	public boolean supportsNonNullableColumns() throws SQLException {
		return this.dbmd.supportsNonNullableColumns();
	}

	public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
		return this.dbmd.supportsOpenCursorsAcrossCommit();
	}

	public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
		return this.dbmd.supportsOpenCursorsAcrossRollback();
	}

	public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
		return this.dbmd.supportsOpenStatementsAcrossCommit();
	}

	public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
		return this.dbmd.supportsOpenStatementsAcrossRollback();
	}

	public boolean supportsOrderByUnrelated() throws SQLException {
		return this.dbmd.supportsOrderByUnrelated();
	}

	public boolean supportsOuterJoins() throws SQLException {
		return this.dbmd.supportsOuterJoins();
	}

	public boolean supportsPositionedDelete() throws SQLException {
		return this.dbmd.supportsPositionedDelete();
	}

	public boolean supportsPositionedUpdate() throws SQLException {
		return this.dbmd.supportsPositionedUpdate();
	}

	public boolean supportsResultSetConcurrency(int arg0, int arg1)
			throws SQLException {
		return this.dbmd.supportsResultSetConcurrency(arg0, arg1);
	}

	public boolean supportsResultSetHoldability(int arg0) throws SQLException {
		return this.dbmd.supportsResultSetHoldability(arg0);
	}

	public boolean supportsResultSetType(int arg0) throws SQLException {
		return this.dbmd.supportsResultSetType(arg0);
	}

	public boolean supportsSavepoints() throws SQLException {
		return this.dbmd.supportsSavepoints();
	}

	public boolean supportsSchemasInDataManipulation() throws SQLException {
		return this.dbmd.supportsSchemasInDataManipulation();
	}

	public boolean supportsSchemasInIndexDefinitions() throws SQLException {
		return this.dbmd.supportsSchemasInIndexDefinitions();
	}

	public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
		return this.dbmd.supportsSchemasInPrivilegeDefinitions();
	}

	public boolean supportsSchemasInProcedureCalls() throws SQLException {
		return this.dbmd.supportsSchemasInProcedureCalls();
	}

	public boolean supportsSchemasInTableDefinitions() throws SQLException {
		return this.dbmd.supportsSchemasInTableDefinitions();
	}

	public boolean supportsSelectForUpdate() throws SQLException {
		return this.dbmd.supportsSelectForUpdate();
	}

	public boolean supportsStatementPooling() throws SQLException {
		return this.dbmd.supportsStatementPooling();
	}

	public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
		return this.dbmd.supportsStoredFunctionsUsingCallSyntax();
	}

	public boolean supportsStoredProcedures() throws SQLException {
		return this.dbmd.supportsStoredProcedures();
	}

	public boolean supportsSubqueriesInComparisons() throws SQLException {
		return this.dbmd.supportsSubqueriesInComparisons();
	}

	public boolean supportsSubqueriesInExists() throws SQLException {
		return this.dbmd.supportsSubqueriesInExists();
	}

	public boolean supportsSubqueriesInIns() throws SQLException {
		return this.dbmd.supportsSubqueriesInIns();
	}

	public boolean supportsSubqueriesInQuantifieds() throws SQLException {
		return this.dbmd.supportsSubqueriesInQuantifieds();
	}

	public boolean supportsTableCorrelationNames() throws SQLException {
		return this.dbmd.supportsTableCorrelationNames();
	}

	public boolean supportsTransactionIsolationLevel(int arg0)
			throws SQLException {
		return this.dbmd.supportsTransactionIsolationLevel(arg0);
	}

	public boolean supportsTransactions() throws SQLException {
		return this.dbmd.supportsTransactions();
	}

	public boolean supportsUnion() throws SQLException {
		return this.dbmd.supportsUnion();
	}

	public boolean supportsUnionAll() throws SQLException {
		return this.dbmd.supportsUnionAll();
	}

	public boolean updatesAreDetected(int arg0) throws SQLException {
		return this.dbmd.updatesAreDetected(arg0);
	}

	public boolean usesLocalFilePerTable() throws SQLException {
		return this.dbmd.usesLocalFilePerTable();
	}

	public boolean usesLocalFiles() throws SQLException {
		return this.dbmd.usesLocalFiles();
	}
	
	/*原生方法*/

}
